package designPatterns.P01_单例模式_Singleton.P02_懒汉式_不推荐.improve01_不推荐;

public class P01 {
    public static void main(String[] args) {
        Singleton instance1 = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println(instance1 == instance2);
        System.out.println("instance1: " + instance1.hashCode());
        System.out.println("instance2: " + instance2.hashCode());
    }
}

/**
 * 优缺点说明：
 * 1)	解决了线程不安全问题
 * 2)	效率太低了，每个线程在想获得类的实例时候，执行getInstance()方法都要进行
 * 同步。而其实这个方法只执行一次实例化代码就够了，后面的想获得该类实例， 直接return就行了。方法进行同步效率太低
 * 3)	结论：在实际开发中，不推荐使用这种方式
 */
class Singleton {
    private static Singleton instance;
    
    private Singleton() {

    }
    
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}